package cn.infrabase.crypto;

import cn.infrabase.core.util.ClassUtils;
import lombok.extern.slf4j.Slf4j;

import java.security.Provider;

/**
 * 加密提供者工厂。
 *
 * @author Weimin Gao
 * @since 1.0.0
 **/
@Slf4j
public class CryptoProviderFactory {

    /**
     * 创建第三方BouncyCastle加密提供者，如果找不到加密提供者类则返回null值。
     *
     * @return 加密提供者对象。
     */
    public static Provider createBouncyCastleProvider() {
        Provider ret = null;
        try {
            Class<?> clazz = ClassUtils.loadClassForName(CryptoProvider.BOUNCY_CASTLE_PROVIDER.clazz());
            Object provider = clazz.getDeclaredConstructor().newInstance();
            ret = (Provider) provider;
        } catch (Exception e) {
            // 忽略
        }
        return ret;
    }

}
